home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / nrpas13.zip / MNEWT.PAS < prev    next >
Pascal/Delphi Source File  |  1991-04-29  |  975b  |  34 lines

  1. PROCEDURE mnewt(ntrial: integer; VAR x: glnarray; n: integer;
  2.       tolx,tolf: real);
  3. (* Programs using routine MNEWT must define the types
  4. TYPE
  5.    glnarray = ARRAY [1..n] OF real;
  6.    glnbyn = ARRAY [1..n,1..n] OF real;
  7.    glindx = ARRAY [1..n] OF integer;
  8. in the main routine. They must also supply a routine
  9. PROCEDURE usrfun(x: glnarray; n: integer; VAR alpha: glnbyn;
  10.        VAR beta: glnarray);   *)
  11. LABEL 99;
  12. VAR
  13.    k,i: integer;
  14.    errx,errf,d: real;
  15.    beta: glnarray;
  16.    alpha: glnbyn;
  17.    indx: glindx;
  18. BEGIN
  19.    FOR  k := 1 TO ntrial DO BEGIN
  20.       usrfun(x,n,alpha,beta);
  21.       errf := 0.0;
  22.       FOR i := 1 TO n DO errf := errf+abs(beta[i]);
  23.       IF (errf <= tolf) THEN GOTO 99;
  24.       ludcmp(alpha,n,np,indx,d);
  25.       lubksb(alpha,n,np,indx,beta);
  26.       errx := 0.0;
  27.       FOR i := 1 TO n DO BEGIN
  28.          errx := errx+abs(beta[i]);
  29.          x[i] := x[i]+beta[i]
  30.       END;
  31.       IF (errx <= tolx) THEN GOTO 99
  32.    END;
  33. 99:   END;
  34.